#include "mainwindow.h"
#include "QDebug"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setGeometry(0, 0, 800, 480);
    setPalette(QPalette(Qt::gray));
    setAutoFillBackground(true);

    timer = new QTimer(this);
    angle = 0;
    /* 定时100ms */
    timer->start(20);

    connect(timer, SIGNAL(timeout()), this,
            SLOT(timerTimeOut()));
}

MainWindow::~MainWindow()
{
}

void MainWindow::timerTimeOut()
{
    /* 需要更新界面，不设置不更新 */
    this->update();
}
void MainWindow::paintEvent(QPaintEvent *)
{
    /* 指定父对象，this指本窗口 */
    QPainter painter(this);
    /* 设置抗锯齿，流畅转换 */
    painter.setRenderHints(QPainter::Antialiasing
                           | QPainter::SmoothPixmapTransform);
    /* 计算旋转角度 */
    if(angle++ == 360) {
        angle = 0;
    }
    /* QPixmap类型对象 */
    QPixmap image;
    /* 加载 */
    image.load(":/image/1.png");
    /* QRectF即，继承QRect（Qt的矩形类），F代表精确到浮点类型 */
    QRectF rect((this->width() - image.width()) / 2,
                (this->height() - image.height()) / 2,
                image.width(),
                image.height());
    /* 默认参考点为左上角原点（0,0），因为旋转需要以图形的中心为参考点，
     * 我们使用translate把参考点设置为CD图形的中心点坐标 */
    painter.translate(0 + rect.x() + rect.width() / 2,
                      0 + rect.y() + rect.height() / 2);
    /* 旋转角度 */
    painter.rotate(angle);
    /* 现在参考点为CD图形的中心，我们需要把它设置回原点的位置，
     * 所以需要减去上面加上的数 */
    painter.translate(0 - (rect.x() + rect.width() / 2),
                      0 - (rect.y() + rect.height() / 2));
    /* 画图,QPainter提供了许多drawX的方法 */
    painter.drawImage(rect, image.toImage(), image.rect());
    /* 再画一个矩形 */
    painter.drawRect(rect.toRect());
}
